Server control layer puts ICBSFacade ahead. All further requests go with the aid of this interface, as it is shown below. To control proper Server activity, it uses ICBSState and ICBSModel interfaces for read and modify respectively. To manage the specific Build Space ICBSFacade introduces IBSFacade.
The last one belongs already to the next Build Space control layer, and in a similar manner use IBSState and IBSModel to read and modification of proper Build Server instance and exposes IRequestController to access data about specific request addressed to this Build Space.
IRequestController is an "avant-garde" of Request control layer and, again, provides IRequestState to get more details about the request state and IRequestModel to modify it if possible. All IRequestXXX interfaces can have specific descendants, for example, IImportRequestModel provides much more methods than IBuildRequestModel to modify a request to import data into a Build Space
As it described above, all the layers are built to correspond the MVC-paradigm (xxxModel - xxxState - xxxFacade are corresponding to Model - View - Controller roles). Implementation of xxxModel and xxxState belongs to the layer the interfaces are described in. Implementation of xxxFacade belongs logically rather to the layer communicating to the layer where an IxxxFacade interface is defined.
ICBSFacade describes top-level functionality of Server control layer and is intended to manage the generic server activity (like build space creation and access to system resource) and access underlying layers for more fine-granulated functions. It introduces only one way to next layer: via exposed IBSFacade.
Build Space control layer cares about existing build spaces: life cycle (update, delete) and generic management (f. ex. turn on/off input/output request processing). More over, the layer is responsible for coordination of Build Space instances of the same Build Space in case of cluster installation. In its turn, the only way to step from here one layer further is through exposed IRequestFacade, which actuall type is depends on the request type and is determined during the search of request by incoming request ID.
IxxxRequestController allows search by incoming request ID. Representatives (in terms of implementation) of the Request control layer are IxxxRequestModel and IxxxRequestState. They correspond to one request instance.
Client | V 1 *|--> ICBSModel ICBSController -------| | 1 *|--> ICBSState | V * 1 *|--> IBSModel IBSController --------| | 1 *|--> IBSState | V * 1 *|--> IRequestModel IRequestController ---| *|--> IRequestState